tg-me.com/pythonl/4819
Last Update:
🐍 Задача на Python: "Исчезающая цифра"
Условие:
У тебя есть список строк — чисел от 1 до 100, но одно из чисел случайно пропало.
Найди, какое число отсутствует. Нельзя использовать sum()
, sorted()
, Counter
. Все числа в списке представлены как строки.
Пример:
import random
original = [str(i) for i in range(1, 101)]
missing = random.choice(original)
shuffled = original.copy()
shuffled.remove(missing)
random.shuffle(shuffled)
Напиши функцию:
def find_missing_number(data: list[str]) -> int:
...
📌 Подвох:
Нельзя просто сложить строки. Но можно использовать свойство XOR:
a ^ a = 0
0 ^ b = b
То есть: если мы сделаем XOR всех чисел от 1 до 100, а затем XOR всех чисел в переданном списке — результатом будет пропущенное число.
🧠 Решение:
```python
def find_missing_number(data: list[str]) -> int:
xor_full = 0
xor_data = 0
for i in range(1, 101):
xor_full ^= i
for val in data:
xor_data ^= int(val)
return xor_full ^ xor_data
```
✅ Пояснение:
-
xor_full
-
xor_data
- Разность
xor_full ^ xor_data
🎯 Пример использования:
```python
original = [str(i) for i in range(1, 101)]
original.remove("42")
random.shuffle(original)
print(find_missing_number(original)) # → 42
```
🔥 Эта задача хороша тем, что:
• содержит хитрый запрет на
sum()
• требует знания побитовых операций
• работает с типами (`str` vs `int`)
• подходит для собеседования уровня middle+
@pythonl
BY Python/ django
Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283
Share with your friend now:
tg-me.com/pythonl/4819